package pe.edu.sisclas.model.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.sisclas.model.dao.ComentarioDao;
import pe.edu.sisclas.model.dao.exception.DaoException;
import pe.edu.sisclas.model.domain.Comentario;
import pe.edu.sisclas.model.domain.Incidencia;
import pe.edu.sisclas.model.service.ComentarioService;
import pe.edu.sisclas.model.service.exception.ServiceException;

@Service("comentarioService")
public class ComentarioServiceImpl implements ComentarioService {

	@Autowired
	private ComentarioDao comentarioDao;

	@Transactional(readOnly = false, rollbackFor = ServiceException.class)
	@Override
	public void guardarComentario(Comentario comentario)
			throws ServiceException {
		try {
			this.comentarioDao.save(comentario);
		} catch (DaoException e) {
			throw ServiceException.mensaje("Error al guardar el comentario");
		}
	}

	public ComentarioDao getComentarioDao() {
		return comentarioDao;
	}

	public void setComentarioDao(ComentarioDao comentarioDao) {
		this.comentarioDao = comentarioDao;
	}

	@Transactional(readOnly = true, rollbackFor = ServiceException.class)
	@Override
	public List<Comentario> obtenerComentariosPorIncidencia(
			Incidencia incidencia) throws ServiceException {
		try {
			return this.comentarioDao.getComentariosByIncidencia(incidencia);
		} catch (DaoException e) {
			e.printStackTrace();
			throw ServiceException
					.mensaje("Error al cargar los comentarios de la incidencia.");
		}
	}

}
